package vg.services.graph_view_manager.interfaces.graph_comparison;

import com.google.common.collect.BiMap;
import vg.interfaces.ll_services.data_base_service.data.graph.Vertex;

import java.util.Map;

/**
 * Input properties for graph comparison algorithm.
 *
 * @author Timur Zolotuhin (e-mail: tzolotuhin@gmail.com)
 */
public class InputGraphComparisonAlgorithmProperties {
    private Map<String, Float> vertexAttributeAndWeightTable;
    private Map<String, Float> edgeAttributeAndWeightTable;

    private float vertexBarrier;
    private float edgeBarrier;

    private boolean enableHeuristic;
    private boolean enableStrongComparison;

    public BiMap<Vertex, Vertex> unitedVertices;
    public BiMap<Vertex, Vertex> separatedVertices;

    public Map<String, Float> getVertexAttributeAndWeightTable() {
        return vertexAttributeAndWeightTable;
    }

    public Map<String, Float> getEdgeAttributeAndWeightTable() {
        return edgeAttributeAndWeightTable;
    }

    public float getVertexBarrier() {
        return vertexBarrier;
    }

    public float getEdgeBarrier() {
        return edgeBarrier;
    }

    public BiMap<Vertex, Vertex> getUnitedVertices() {
        return unitedVertices;
    }

    public boolean isEnableHeuristic() {
        return enableHeuristic;
    }

    public boolean isEnableStrongComparison() {
        return enableStrongComparison;
    }

    public BiMap<Vertex, Vertex> getSeparatedVertices() {
        return separatedVertices;
    }

    public void setVertexAttributeAndWeightTable(Map<String, Float> vertexAttributeAndWeightTable) {
        this.vertexAttributeAndWeightTable = vertexAttributeAndWeightTable;
    }

    public void setEdgeAttributeAndWeightTable(Map<String, Float> edgeAttributeAndWeightTable) {
        this.edgeAttributeAndWeightTable = edgeAttributeAndWeightTable;
    }

    public void setVertexBarrier(float vertexBarrier) {
        this.vertexBarrier = vertexBarrier;
    }

    public void setEdgeBarrier(float edgeBarrier) {
        this.edgeBarrier = edgeBarrier;
    }

    public void setEnableHeuristic(boolean enableHeuristic) {
        this.enableHeuristic = enableHeuristic;
    }

    public void setEnableStrongComparison(boolean enableStrongComparison) {
        this.enableStrongComparison = enableStrongComparison;
    }

    public void setUnitedVertices(BiMap<Vertex, Vertex> unitedVertices) {
        this.unitedVertices = unitedVertices;
    }

    public void setSeparatedVertices(BiMap<Vertex, Vertex> separatedVertices) {
        this.separatedVertices = separatedVertices;
    }
}
